package io.light.frame.dal.mybatis.generator.core.mapper.type;

import io.light.frame.dal.mybatis.generator.core.cfg.ModuleConfiguration;
import io.light.frame.dal.mybatis.generator.core.domain.clazz.Clazz;
import io.light.frame.dal.mybatis.generator.core.domain.mapper.Mapper;
import org.apache.ibatis.type.JdbcType;

/**
 * Type handler
 *
 * @author Ivan
 * @version 1.0.0
 * @date 2021-06-17 12:12
 */
public interface TypeHandler {

    void handle(Mapper mapper, ModuleConfiguration configuration);

    Clazz mapJavaType(Mapper.Property property,ModuleConfiguration configuration);

    void register(JdbcType jdbcType, Class<?> javaType);

    void register(JdbcType jdbcType, Clazz javaType);

    void register(Class<?> javaType, JdbcType... jdbcTypes);

    void register(Clazz javaType, JdbcType... jdbcTypes);
}
